//package main.java.main.util;
//
//
//import com.alibaba.fastjson.JSON;
//import main.java.main.bean.CoverageBean;
//
//import java.io.*;
//import java.lang.reflect.Method;
//import java.lang.reflect.Modifier;
//import java.util.List;
//
////import com.flux.wmsv5.a30oubbizweb.lastest.modules.a3022.dao.SoDocDeveryNoteDao;
//
///**
// * 输出Mock通用结果
// *
// * <p>
// * 创建时间：2020年6月21日
// * <p>
// *
// * <p>
// * 修改时间：
// * <p>
// *
// * @author hexianyin
// * @version V1.0.0
// */
//public class MockTest {
//
//    public static void main(String[] args) throws ClassNotFoundException {
//        String readConfig = System.getProperty("user.dir") + "/V6NewTools/conf/coverage/config.json";
//
////        String jsonStr = CreateUtil.readJsonFile(readConfig);
////        CoverageBean bean = JSON.parseObject(jsonStr, CoverageBean.class);
////        GetMockFunction("AddRulDisZoneServiceCtrl",bean);
//
//            Class c = Class.forName("com.flux.tms.tm03srv.t0305.impl.ctrl.AddRulDisZoneServiceCtrl.class");
//        String className = c.getSimpleName();
//        System.out.println(className);
//    }
//
//    public static CoverageBean GetMockFunction(String classPath, CoverageBean bean) throws ClassNotFoundException, UnsupportedEncodingException {
//        //Class c = SoDocDeveryNoteDao.class;
////        com.flux.wmsv5.a30oubbizweb.lastest.modules.a3022.service.SoDocDeveryNoteService
//        FileInputStream fis = new FileInputStream(file.getAbsolutePath());
//
//        InputStreamReader isr = new InputStreamReader(fis,"UTF-8");
//
//        BufferedReader br = new BufferedReader(isr);
//
//        ClassLoaderExpand clod=new ClassLoaderExpand();
//        System.out.println(bean.getToPath());
//        //指定java class 文件目录
//        clod.setLocation(bean.getToPath());
//
//            //调用 通过字节流生产java类
//            Class c=clod.findClass(classPath);
////            Class c = Class.forName(classPath);
//        String className = c.getSimpleName();
//        System.out.println(className);
//        //获取类中所有方法
//        Method[] declaredMethods = c.getDeclaredMethods();
//        System.out.println(declaredMethods.toString());
//
//        StringBuffer functionContent = null;
//        String modifier = null;// 修饰符
//        String returnTypeSimpleName = null;// 返回值类型，不带包的路径
//        String functionName = null;// 方法名称
//        StringBuffer parameterTypesSimpleName = null;// 方法参数类似，逗号隔开
//        Class<?> returnType = null;// 返回值
//        for (Method method : declaredMethods) {
//            functionContent = new StringBuffer();
//            parameterTypesSimpleName = new StringBuffer();
//            modifier = Modifier.toString(method.getModifiers());
//            functionContent.append(Modifier.toString(method.getModifiers()));// 获取修饰符
//            returnType = method.getReturnType();// 返回值
//            returnTypeSimpleName = returnType.getSimpleName();// 返回值类型，不带包的路径
//            functionName = method.getName();// 方法名称
//            functionContent.append(" " + returnTypeSimpleName);
//            functionContent.append(" " + functionName);
//            functionContent.append("(");
//            Class<?>[] parameterTypes = method.getParameterTypes();
//            for (Class<?> parameterType : parameterTypes) {
//                parameterTypesSimpleName.append(parameterType.getSimpleName() + ",");
//                functionContent.append(parameterType.getSimpleName() + ",");// 逗号拼接参数类型
//            }
//            if (functionContent != null && functionContent.length() > 0) {
//                functionContent = functionContent.deleteCharAt(functionContent.length() - 1);// 删除最后一个逗号
//            }
//            if (parameterTypesSimpleName != null && parameterTypesSimpleName.length() > 0) {
//                parameterTypesSimpleName = parameterTypesSimpleName.deleteCharAt(parameterTypesSimpleName.length() - 1);// 删除最后一个逗号
//            }
//            functionContent.append(")");
//            printMockFunction(className, functionContent.toString(), modifier, returnTypeSimpleName, functionName, parameterTypesSimpleName.toString(), bean);
//        }
//        return bean;
//    }
//
//    /**
//     * 输出Mock通用结果
//     *
//     * <p>Author: hexianyin
//     * <p>Create Time: 2020年6月21日
//     *
//     * @param className                类名
//     * @param functionContent          整个方法头部
//     * @param modifier                 修饰符
//     * @param returnType               返回值类型
//     * @param functionName             方法名称
//     * @param parameterTypesSimpleName 方法参数类型 逗号隔开
//     * @return
//     */
//    private static CoverageBean printMockFunction(String className, String functionContent,
//                                                  String modifier, String returnType,
//                                                  String functionName, String parameterTypesSimpleName, CoverageBean bean) {
//        // 私有的方法不生成
//        if ("private".equals(modifier)) {
//            return bean;
//        }
//        // 方法全名，想看输出的可以打开
////		functionContent= functionContent.trim();
////		System.out.println(functionContent);
//
//        // 首字母小写
//        className = className.substring(0, 1).toLowerCase() + className.substring(1);
//        boolean isCtr = false;
//        boolean isService = false;
//        boolean isDao = false;
//        // .when(xxx)
//        String whenClassName = "";
//        if (className.endsWith("Ctrl")) {
//            whenClassName = className.substring(0, className.lastIndexOf("Ctrl")) + "Service";
//            isCtr = true;
//        } else if (className.endsWith("Service")) {
//            whenClassName = className.substring(0, className.lastIndexOf("Service")) + "Dao";
//            isService = true;
//        } else if (className.endsWith("Dao")) {
//            isDao = true;
//        }
//        // 方法参数类型集合
//        String[] parameterTypes = parameterTypesSimpleName.split(",");
//        StringBuffer anyParams = new StringBuffer();
//        StringBuffer spyParams = new StringBuffer();
//        for (String param : parameterTypes) {
//            anyParams.append("any(" + param + ".class), ");
//            // spyParam解析,不是绝对解析
//            if ("LoginInfoObj".equalsIgnoreCase(param)) {
//                spyParams.append("loginInfoObj, ");
//            } else if ("Map".equalsIgnoreCase(param)) {
//                spyParams.append("bizDataMap, ");
//            } else if ("List".equalsIgnoreCase(param)) {
//                spyParams.append("tmpMapList, ");
//            } else if ("String".equalsIgnoreCase(param)) {
//                spyParams.append("\"str\", ");
//            } else if ("int".equalsIgnoreCase(param)) {
//                spyParams.append("1, ");
//            } else if ("boolean".equalsIgnoreCase(param)) {
//                spyParams.append("true, ");
//            } else {
//                spyParams.append("new " + param + "(), ");
//            }
//        }
//        if (anyParams != null && anyParams.length() > 0) {
//            anyParams.deleteCharAt(anyParams.length() - 2);// 去掉逗号和空格
//        }
//
//        if (spyParams != null && spyParams.length() > 0) {
//            spyParams.deleteCharAt(spyParams.length() - 2);// 去掉逗号和空格
//        }
//        // mockReturn
//        String mockReturn = "";
//        if ("Map".equalsIgnoreCase(returnType)) {
//            mockReturn = "tmpMap";
//        } else if ("List".equalsIgnoreCase(returnType)) {
//            mockReturn = "tmpMapList";
//        } else if ("int[]".equalsIgnoreCase(returnType)) {
//            mockReturn = "null";
//        } else if ("int".equalsIgnoreCase(returnType)) {
//            mockReturn = "1";
//        } else if ("boolean".equalsIgnoreCase(returnType)) {
//            mockReturn = "true";
//        } else {
//            // 无返回值，暂时先写1吧
//            if ("void".equals(modifier)) {
//                mockReturn = "1";
//            } else {
//                mockReturn = "new " + returnType + "()";
//            }
//        }
//        // Service输出
//        if (isService) {
//            String print1 = "PowerMockito.doReturn(" + mockReturn + ").when(" + whenClassName + ")." + functionName + "(" + anyParams.toString().trim() + ");";
//            System.out.println(print1);
//            String print2 = "spy." + functionName + "(" + spyParams.toString().trim() + ");";
//            System.out.println("spy." + functionName + "(" + spyParams.toString().trim() + ");");
//            List<String> serlist = bean.getSerPrintlnStr();
//            serlist.add(print1);
//            serlist.add(print2);
//            bean.setSerPrintlnStr(serlist);
//
//        }
//        // Service输出
//        if (isDao) {
//            String print1 = "spy." + functionName + "(" + spyParams.toString().trim() + ");";
//            System.out.println(print1);
//            List<String> daolist = bean.getDaoPrintlnStr();
//            daolist.add(print1);
//            bean.setDaoPrintlnStr(daolist);
//        }
//
//        return bean;
//    }
//
//
//}
